package cn.net.dpi.util;

/**
 * Copyright(c) 2021 Dayou Positioning Intelligence Co.,Ltd
 * All rights reserved.
 *
 * @Date 2021/11/29
 * @Author caoxiangshang(caoxiangshang @ dpi.net.cn)
 * @Version v0.1
 * @Reviewer
 */

import com.alibaba.fastjson.JSON;
import org.apache.commons.io.FileUtils;
import org.apache.http.entity.ContentType;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;

public class IOUtil {

    /**
     * 生成.json格式文件
     */
    public static MultipartFile createJsonFile(Object object, String filePath, String fileName) {
        // 标记文件生成是否成功
        String jsonString = JSON.toJSONString(object);
        // 拼接文件完整路径
        String fullPath = filePath + File.separator + fileName + ".json";

        // 生成json格式文件
        try {
            // 保证创建一个新文件
            File file = new File(fullPath);
            if (!file.getParentFile().exists()) { // 如果父目录不存在，创建父目录
                file.getParentFile().mkdirs();
            }
            if (file.exists()) { // 如果已存在,删除旧文件
                file.delete();
            }
            file.createNewFile();

            // 格式化json字符串
            jsonString = JsonFormatTool.formatJson(jsonString);

            // 将格式化后的字符串写入文件
            Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
            write.write(jsonString);
            write.flush();
            write.close();

            FileInputStream fileInputStream = new FileInputStream(file);
            MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(),
                    ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream);
            return multipartFile;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    //读取json文件
    public static String readJsonFile(MultipartFile multipartFile) throws IOException {
        // 获取原始名字
        String fileName = multipartFile.getOriginalFilename();
        // 获取后缀名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        //先将.json文件转为字符串类型
        File file = new File("/"+ fileName);
        //将MultipartFile类型转换为File类型
        FileUtils.copyInputStreamToFile(multipartFile.getInputStream(),file);
        String jsonString = FileUtils.readFileToString(file, "UTF-8");
        return jsonString;
    }

}
